package java学习.代码随想录.动态规划;

import java.util.Arrays;

/**
 * **************
 * 项目名称: 蓝桥杯-Java学习 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦Lenovo <br/>
 * 创建时间: 2022/8/23 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class 爬楼梯 {
    /** 
     * bagesize = n , weight = {1,2}
     * 求方法数: 排列 ，先背包容量; 再物品、
     * todo 这是背包里求排列问题，即：1、2 步 和 2、1 步都是上三个台阶，但是这两种方法不一样！
     * 
     */ 
    public static int climbStairs(int n) {
        int[] dp = new int[n+1];
        int []weight = {1,2};
        dp[0] = 1;
        for (int i = 0; i <=n; i++) {
            for (int j = 0; j <weight.length; j++) {
                if (i>=weight[j]){
                    dp[i] +=dp[i-weight[j]];
                }
            }
        }
        System.out.println(Arrays.toString(dp));
        return dp[n];
    }

    public static void main(String[] args) {
        System.out.println(climbStairs(3));
    }
}
